package Year22_Month04.day21;

public class 删除倒数N节点 {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        //第一个细节就是要用虚拟节点来进行操作，这样可以忽视许多特殊的输入
        ListNode node = new ListNode(0,head);
        ListNode fast = head;
        while(n > 0){
            fast = fast.next;
            n--;
        }
        ListNode slow = node;
        //这里当fast走完之后，为null的时候,slow的下一个节点就是要删除的节点。
        while(fast != null){
            slow = slow.next;
            fast = fast.next;
        }
        //然后进行删除，这里slow不为空的原因是因为,fast走过的路程一定是不为null的
        slow.next = slow.next.next;
        return node.next;
    }
}
